<?php
/**
 * Проверка имени пользователя на уникальность для форм создания/редактирования пользователей
 * 
 * @category Phorm
 * @package Validate
 * @name /Phorm/Validate/UserUniqueUsername.php
 * @copyright phorm.ru
 * @since 19.02.2012
 * @author vladimir@kachalov.net
 */

class Phorm_Validate_UserUniqueUsername extends Zend_Validate_Abstract {
		
	const USERNAME_EXISTS = 'usernameExists';
	 
	/**
	 * Шаблоны сообщений
	 * @var array
	 */
	protected $_messageTemplates = array(
		self::USERNAME_EXISTS => "Username '%value%' exists"
	);


	/**
	 * Непосредственно метод валидации
	 *
	 * @param string $value
	 * @param mixed $context
	 * @return boolean
	 */
	 
	public function isValid($value, $context = null) {
	        
		require_once "Phorm/Model.php";
		
	    $Model = new Phorm_Model();
		
		$select = $Model->_db->select()
				-> from('pw_users', new Zend_Db_Expr(1))
				-> where('username=?',$value);
				
		if(is_array($context) && isset($context['userid'])) {
			$select -> where('userid!=?',$context['userid']);
		}
			
		if($Model->_db->fetchOne($select)) {
			$this->_error(self::USERNAME_EXISTS);
	        return false;
		}
			
		return true;
	        
	}
}
	